package com.potenzacd.project.controller;


import com.potenzacd.project.entity.Result;
import com.potenzacd.project.entity.StatusCode;
import com.potenzacd.project.pojo.ProductApprovalInfo;
import com.potenzacd.project.pojo.ProductInfo;
import com.potenzacd.project.service.impl.ProductInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author Cuidongdong
 * @since 2021-01-18
 */
@RestController
@CrossOrigin
@RequestMapping("/project/product-info")
public class ProductInfoRestController {
    @Autowired
    private ProductInfoService productInfoService;
    /**
     * 存为草稿(创建)
     *
     * @param info 要保存的信息
     */
    @PostMapping("/save4draft")
    public Result save4draft(@RequestBody ProductInfo info){
        productInfoService.save4draft(info);
        return new Result(true, StatusCode.OK,"保存为草稿!",null);
    }

    /**
     * 提交审核(修改)
     * @param info 要提交审核的信息
     */
    @PostMapping("/edit4Approval")
    public Result edit4Approval( @RequestBody ProductInfo info){
        productInfoService.edit4Approval(info);
        return new Result(true, StatusCode.OK,"提交审核成功!",null);
    }

    /**
     * 存为草稿(修改)
     *
     * @param info 要保存的信息
     */
    @PostMapping("/edit4draft")
    public Result edit4draft(@RequestBody ProductInfo info){
        productInfoService.edit4draft(info);
        return new Result(true, StatusCode.OK,"保存为草稿!",null);
    }

    /**
     * 提交审核(创建)
     * @param info 要提交审核的信息
     */
    @PostMapping("/save4Approval")
    public Result save4Approval( @RequestBody ProductInfo info){
        productInfoService.save4Approval(info);
        return new Result(true, StatusCode.OK,"创建时提交审核成功!",null);
    }


    /**
     * 审核
     * @param info 审核记录
     */
    @PostMapping("/approval")
    public Result approval(@RequestBody ProductApprovalInfo info){
        productInfoService.approval(info);
        return new Result(true, StatusCode.OK,"审核成功!",null);
    }


    /**
     * 发布
     * @param info 要发布的信息
     */
    @PostMapping("/publish")
    public Result publish(@RequestBody ProductInfo info){
        productInfoService.publish(info);
        return new Result(true, StatusCode.OK,"发布成功!",null);
    }

    /**
     * 再次审核
     * 	审核失败之后，进行信息的修改，之后提交审核
     * @param info 要审核的信息
     */
    @PostMapping("/re4Approval")
    public Result re4Approval(@RequestBody ProductInfo info){
        productInfoService.re4Approval(info);
        return new Result(true, StatusCode.OK,"再次审核成功!",null);
    }

    /**
     * 作废
     * @param info 要作废的信息
     */
    @PostMapping("/abort")
    public Result abort(@RequestBody ProductInfo info){
        productInfoService.abort(info);
        return new Result(true, StatusCode.OK,"作废成功!",null);
    }


    /**
     * 分页
     * @return
     */
    @GetMapping("/finData")
    public Result finData(){
        List<ProductInfo> list = productInfoService.finData();
        return new Result(true, StatusCode.OK,"全部查询!",list);
    }

    /**
     * 查看详情
     * @param code code 要查询的标识
     * @return 信息
     */
    @GetMapping("/detai/{code}")
    public Result  detai(@PathVariable String code){
        ProductInfo detai = productInfoService.detai(code);
        return new Result(true, StatusCode.OK,"查看详情成功!",detai);
    }
}

